home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 22 / CU Amiga Magazine's Super CD-ROM 22 (1998)(EMAP Images)(GB)[!][issue 1998-05].iso / PowerPC / Programming / PPCsiod / SIOD / Vector.scm < prev   
Encoding:
Text File  |  1993-09-22  |  1.4 KB  |  47 lines

  1. (define (vector-copy v)
  2.         (define lv (vector-length v)) 
  3.         (do ((n (make-vector lv))
  4.              (i 0 (1+ i)))
  5.             ((= i lv) n)
  6.             (vector-set! n i (vector-ref v i))))
  7.  
  8. (define (vector-append x y)
  9.         (let* ((lx (vector-length x))
  10.                (ly (vector-length y))
  11.                (n (make-vector (+ lx ly))))
  12.               (do ((i 0 (1+ i)))
  13.                   ((= i (max lx ly)) n)
  14.                   (if (< i lx)
  15.                       (vector-set! n i (vector-ref x i)))
  16.                   (if (< i ly)
  17.                       (vector-set! n (+ i lx) (vector-ref y i))))))
  18.         
  19. (define (vector-reverse v)
  20.         (define lv (vector-length v)) 
  21.         (do ((n (make-vector lv))
  22.              (i 0 (1+ i)))
  23.             ((= i lv) n)
  24.             (vector-set! n i (vector-ref v (- lv i 1)))))
  25.  
  26. (define (vector-reverse! v)
  27.         (do ((lv (vector-length v))
  28.              (tmp '())
  29.              (i 0 (1+ i)))
  30.             ((> i (/ lv 2)) v)
  31.             (set! tmp (vector-ref v i))
  32.             (vector-set! v i (vector-ref v (- lv i 1)))
  33.             (vector-set! v (- lv i 1) tmp)))
  34.  
  35. (define (vector-map v p)
  36.         (define lv (vector-length v)) 
  37.         (do ((n (make-vector lv))
  38.              (i 0 (1+ i)))
  39.             ((= i lv) n)
  40.             (vector-set! n i (p (vector-ref v i)))))
  41.  
  42. (define (vector-for-each v p)
  43.         (do ((lv (vector-length v)) 
  44.              (i 0 (1+ i)))
  45.             ((= i lv))
  46.             (p (vector-ref v i))))
  47.